import Vue from "vue";

import Cookies from "js-cookie";

import "normalize.css/normalize.css"; // a modern alternative to CSS resets

import Element from "element-ui";
import "./styles/element-variables.scss";

import "@/styles/index.scss"; // global css

import App from "./App";
import store from "./store";
import router from "./router";

import "./icons"; // icon
import "./permission"; // permission control
import "./utils/error-log"; // error log

import STATUS from "./enum/STATUS.js";
import { hasAuth } from "@/assets/js/use.js";
import SIGN from "./enum/SIGN.js";

// import iView from 'iview';
// import 'iview/dist/styles/iview.css';
import "@/components/directive/auth.js";
// 图片预览
import localImgPreview from "./components/plugin/imgPreview/index.js";
Vue.use(localImgPreview);

import echarts from "echarts";
Vue.prototype.$echarts = echarts;

Vue.config.productionTip = false;

Vue.prototype.STATUS = STATUS;
Vue.prototype.hasAuth = hasAuth;
Vue.prototype.SIGN = SIGN;

// 全局mixin
import { mixin } from "@/components/mixin/global.js";
Vue.mixin(mixin);
// 缓存问题
// import Navigation from "vue-navigation";
// Vue.use(Navigation, { router, store });

import * as filters from "./filters"; // global filters
/**
 * If you don't want to use mock-server
 * you want to use MockJs for mock api
 * you can execute: mockXHR()
 *
 * Currently MockJs will be used in the production environment,
 * please remove it before going online ! ! !
 */
// if (process.env.NODE_ENV === "production") {
//   const { mockXHR } = require("../mock");
//   mockXHR();
// }

Vue.use(Element, {
  size: Cookies.get("size") || "medium" // set element-ui default size
});

// register global utility filters
Object.keys(filters).forEach(key => {
  Vue.filter(key, filters[key]);
});

Vue.config.productionTip = false;

new Vue({
  el: "#app",
  router,
  store,
  render: h => h(App)
});
